// function curry(fn) {
//     return function curried(...args) {
//         if (args.length >= fn.length) {
//             return fn.apply(this, args);
//         } else {
//             return function (...moreArgs) {
//                 return curried.apply(this, args.concat(moreArgs));
//             };
//         }
//     }
// }
// const promise = new Promise((resolve, reject) => {
//     console.log('a');
//     setTimeout(() => {
//         console.log('b1');
//     });
//     console.log('b2');

//     resolve();
// });

// promise.then(() => {
//     console.log('c');
// });

// console.log('d');
async function a() {
    await console.log(1);
    console.log(2);
    console.log(3);
    await console.log(5);
    console.log(6);
    console.log(7);
  }
  process.nextTick(() => {
    console.log(4);
  })
  setTimeout(() => {
    console.log('timeout');
  }, 4);
  setImmediate(() => {
    console.log('immediate');
  });
  a()